package com.tothefor.controller;

import com.tothefor.pojo.entity.QuestionConnect;
import com.tothefor.pojo.entity.Questionnaire;
import com.tothefor.resultR.R;
import com.tothefor.service.impl.QuestionConnectServiceImpl;
import com.tothefor.service.impl.QuestionServiceImpl;
import com.tothefor.service.impl.QuestionnaireServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/questionnaire")
public class QuestionnaireController {
    @Autowired
    private QuestionnaireServiceImpl questionnaireService;
    @Autowired
    private QuestionServiceImpl QuestionService;
    @Autowired
    private QuestionConnectServiceImpl QuestionConnectService;

    @PostMapping("/submitQuestionnaire")
    public R<?> submitQuestionnaire(@RequestBody Questionnaire Questionnaire){
        List<Questionnaire> questionnaires = questionnaireService.list();
        if(questionnaires.size()==0){
            Questionnaire.setId(1);
        }else{
            Questionnaire.setId(questionnaires.get(questionnaires.size()-1).getId()+1);
        }
        questionnaires.add(Questionnaire);

        questionnaireService.save(Questionnaire);
        List<QuestionConnect> questionConnects = QuestionConnectService.list();

        int count = 0;
        for(Questionnaire questionnaire:questionnaires){
            count++;
        }
        for(QuestionConnect questionConnect: questionConnects){
            if(questionConnect.getNaireId()==0){
                if(questionnaires!=null&&questionnaires.size()>0){
                    questionConnect.setNaireId(questionnaires.get(count-1).getId());
                    QuestionConnectService.updateById(questionConnect);

                }
            }
        }

        return R.SUCCESS(questionnaires);
    }

    @PostMapping("/modifyQuestionnaire")
    public R<?> modifyQuestionnaire(@RequestBody Questionnaire data){
        List<Questionnaire> questionnaires = questionnaireService.list();
        for (Questionnaire questionnaire:questionnaires){
            if(questionnaire.getId()==data.getId()){
                Questionnaire q = new Questionnaire(questionnaire.getId(), data.getName(), data.getState(), questionnaire.getUsername());

                questionnaireService.removeById(questionnaire.getId());
                questionnaireService.save(q);
            }
        }


        return R.SUCCESS(data);
    }

    @PostMapping("/showQuestionnaire")
    public R<?> showQuestionnaire(@RequestBody Questionnaire questionnaire){
        String username = questionnaire.getUsername();
        List<Questionnaire> Questionnaire = questionnaireService.list();
        List<Questionnaire> needQuestionnaires = new ArrayList<>();
        for(Questionnaire questionnairee:Questionnaire){
            if(username.equals(questionnairee.getUsername())){
                needQuestionnaires.add(questionnairee);
            }
        }
        return R.SUCCESS(needQuestionnaires);
    }

    @PostMapping("/showQuestionnaireOpen")
    public R<?> showQuestionnaireOpen(@RequestBody Questionnaire questionnaire){
        String username = questionnaire.getUsername();
        List<Questionnaire> Questionnaire = questionnaireService.list();
        List<Questionnaire> needQuestionnaires = new ArrayList<>();
        for(Questionnaire questionnairee:Questionnaire){
            if(username.equals(questionnairee.getUsername())&&questionnairee.getState().equals("开放")){
                needQuestionnaires.add(questionnairee);
            }
        }
        return R.SUCCESS(needQuestionnaires);
    }

    @PostMapping("/removeQuestionnaire")
    public R<?> removeQuestionnaire(@RequestBody int id) {
        List<Questionnaire> Questionnaires = questionnaireService.list();
        for (Questionnaire Questionnaire : Questionnaires) {
            if (Questionnaire.getId() == id) {
                if (Questionnaire.getState().equals("关闭")) {
                    questionnaireService.removeById(Questionnaire);
                    List<QuestionConnect> questionConnects = QuestionConnectService.list();
                    for(QuestionConnect questionConnect:questionConnects){
                        if(questionConnect.getNaireId()==id){
                            QuestionConnectService.removeById(questionConnect.getId());
                        }
                    }
                    return R.SUCCESS();
                } else {
                    return R.FAIL();
                }

            }
        }
        return R.FAIL();
    }



}
